// import com.alibaba.druid.sql.ast.SQLDataType_ptr;
// import com.alibaba.druid.sql.ast.SQLExpr_ptr;
// import com.alibaba.druid.sql.ast.SQLName_ptr;
// import com.alibaba.druid.sql.ast.SQLObjectImpl;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;

#include "SQLAlterTableAlterColumn.h"
#include "../../visitor/SQLASTVisitor.h"
#include "../SQLDataType.h"
#include "../SQLExpr.h"
#include "../SQLName.h"
#include "SQLColumnDefinition.h"

// @Override
void SQLAlterTableAlterColumn::accept0(SQLASTVisitor_ptr visitor)
{
  if (visitor->visit(SharedObject(SQLAlterTableAlterColumn)))
  {
    acceptChild(visitor, column);
    acceptChild(visitor, setDefault);
  }
  visitor->endVisit(SharedObject(SQLAlterTableAlterColumn));
}

SQLColumnDefinition_ptr SQLAlterTableAlterColumn::getColumn()
{
  return column;
}

void SQLAlterTableAlterColumn::setColumn(SQLColumnDefinition_ptr column)
{
  this->column = column;
}

BOOL_ptr SQLAlterTableAlterColumn::isSetNotNull()
{
  return setNotNull;
}

void SQLAlterTableAlterColumn::setSetNotNull(BOOL_ptr setNotNull)
{
  this->setNotNull = setNotNull;
}

BOOL_ptr SQLAlterTableAlterColumn::isDropNotNull()
{
  return dropNotNull;
}

void SQLAlterTableAlterColumn::setDropNotNull(BOOL_ptr dropNotNull)
{
  this->dropNotNull = dropNotNull;
}

SQLExpr_ptr SQLAlterTableAlterColumn::getSetDefault()
{
  return setDefault;
}

void SQLAlterTableAlterColumn::setSetDefault(SQLExpr_ptr setDefault)
{
  this->setDefault = setDefault;
}

BOOL_ptr SQLAlterTableAlterColumn::isDropDefault()
{
  return dropDefault;
}

void SQLAlterTableAlterColumn::setDropDefault(BOOL_ptr dropDefault)
{
  this->dropDefault = dropDefault;
}

SQLName_ptr SQLAlterTableAlterColumn::getOriginColumn()
{
  return originColumn;
}

void SQLAlterTableAlterColumn::setOriginColumn(SQLName_ptr x)
{
  if (x != nullptr)
  {
    x->setParent(SharedObject(SQLAlterTableAlterColumn));
  }
  this->originColumn = x;
}

BOOL_ptr SQLAlterTableAlterColumn::isFirst()
{
  return first;
}

void SQLAlterTableAlterColumn::setFirst(BOOL_ptr x)
{
  this->first = x;
}

SQLName_ptr SQLAlterTableAlterColumn::getAfter()
{
  return after;
}

void SQLAlterTableAlterColumn::setAfter(SQLName_ptr x)
{
  if (x != nullptr)
  {
    x->setParent(SharedObject(SQLAlterTableAlterColumn));
  }
  this->after = x;
}

SQLDataType_ptr SQLAlterTableAlterColumn::getDataType()
{
  return dataType;
}

void SQLAlterTableAlterColumn::setDataType(SQLDataType_ptr x)
{
  if (x != nullptr)
  {
    x->setParent(SharedObject(SQLAlterTableAlterColumn));
  }
  this->dataType = x;
}
